package com.wxf.demo1.topic;

import org.apache.kafka.clients.admin.AdminClient;
import org.apache.kafka.clients.admin.AdminClientConfig;
import org.apache.kafka.clients.admin.NewTopic;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.kafka.core.KafkaAdmin;

import java.util.HashMap;
import java.util.Map;

/**
 * @author: 伍祥丰
 * @date: 2020/3/10 10:44
 * @description：
 */

@Configuration
public class KafkaInitialConfiguration {

    /**
     * 利用@Bean来创建topic
     * 如果想要修改分区大小，修改下面的第二个参数，然后重启程序即可，但是分区数只能增大不能减小。
     * @return
     */
    @Bean
    public NewTopic initialTopic(){
        //创建TopicName为topic.quick.initial的Topic并设置分区数为8以及副本数为1（由于副本是分布在不同的broker上，当只有一个broker时，也就单节点，副本也只能创建一个）
        return new NewTopic("topic.quick.initial", 11, (short) 1);
    }

    /**
     *  手动创建topic等操作，必须配置KafkaAdmin以及AdminClient
     * @return
     */
    @Bean
    public KafkaAdmin kafkaAdmin(){
        Map<String, Object> props = new HashMap<>();
        //配置Kafka实例的连接地址
        props.put(AdminClientConfig.BOOTSTRAP_SERVERS_CONFIG, "192.168.0.183:9092");
        KafkaAdmin admin = new KafkaAdmin(props);
        return admin;
    }

    @Bean
    public AdminClient adminClient() {
        return AdminClient.create(kafkaAdmin().getConfig());
    }

}
